package cliente.hospede;

import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

@SuppressWarnings("serial")
public class CadastrarHospede extends AbstractAction{
	
	private Action executaCadastrarHospede;
	
	private JFrame tfCadastrarHospede;
	private JLabel lNomeHospede, lCPF, lEndereco, lFone;
	private JTextField tNomeHospede, tCPF, tEndereco, tFone;
	private JButton bInserir, bFechar;
	
	public CadastrarHospede(){
		super("Cadastrar Hóspede");
		this.putValue(Action.SHORT_DESCRIPTION, "Cadastra um Hóspede no sistema");
		setExecutaCadastrarHospede(new ExecutaCadastrarHospede(this));
	}

	@Override
	/**
	 *  Define o que será executado quando a ação for acionada
	 *  @param e evento recebido
	 */
	public void actionPerformed(ActionEvent e) {
		
		// Cria um novo frame
		setTfCadastrarHospede(new JFrame("Cadastrar Hospede"));
		// Seta a operação default ao fechar o frame (no caso, é eliminar o frame da memória)
		getTfCadastrarHospede().setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		// Seta o container interno
		Container interno = this.getTfCadastrarHospede().getContentPane();
		// Ajusta o layout do Frame para um GridBagLayout
		GridBagConstraints cons = new GridBagConstraints();
		GridBagLayout layout = new GridBagLayout();
		interno.setLayout(layout);
		// Seta uma borda de 2px entre cada elemento do frame
		cons.insets = new Insets(2,2,2,2);
		
		// Componentes do Frame
		
		// Label do nome do Hóspede
		setlNomeHospede(new JLabel("Nome"));		// Novo label
		cons.weightx 	= 0.25; 					// Ocupara 25% da linha
		cons.fill 		= GridBagConstraints.NONE;	// Não será redimensionado
		cons.gridx 		= 0;						// Ficará na coluna 0
		cons.gridy 		= 0;						// Ficará na linha 0
		interno.add(getlNomeHospede(), cons);		// Adiciona ao Frame
		
		// Texto do Nome do Hóspede
		settNomeHospede(new JTextField());				// Novo JTextField
		cons.weightx 	= 0.75; 						// Ocupara 75% da linha
		cons.fill 		= GridBagConstraints.HORIZONTAL;// Será redimensionado horizontalmente
		cons.gridx 		= 1;							// Ficará na coluna 1
		cons.gridy 		= 0;							// Ficará na linha 0
		interno.add(gettNomeHospede(), cons);			// Adiciona ao Frame
		
		// Label do CPF do Hóspede
		setlCPF(new JLabel("CPF: "));
		cons.weightx	= 0.25;
		cons.fill		= GridBagConstraints.NONE;
		cons.gridx		= 0;
		cons.gridy		= 1;
		interno.add(getlCPF(), cons);
		
		// Texto do CPF do Hóspede
		settCPF(new JTextField());
		cons.weightx	= 0.75;
		cons.fill		= GridBagConstraints.HORIZONTAL;
		cons.gridx		= 1;
		cons.gridy		= 1;
		interno.add(gettCPF(), cons);
		
		// Botão Inserir
		setbInserir(new JButton("Inserir"));
		cons.weightx	= 0.75;
		cons.fill		= GridBagConstraints.NONE;
		cons.gridx		= 0;
		cons.gridy		= 2;
		interno.add(getbInserir(), cons);
		getbInserir().setActionCommand("inserir");
		getbInserir().addActionListener(executaCadastrarHospede);
		
		// Botão Fechar
		setbFechar(new JButton("Fechar"));
		cons.weightx	= 0.75;
		cons.gridx		= 1;
		cons.gridy		= 2;
		interno.add(getbFechar(), cons);
		getbFechar().setActionCommand("fechar");
		getbFechar().addActionListener(executaCadastrarHospede);
		
		getTfCadastrarHospede().setSize(300, 200);
		getTfCadastrarHospede().setVisible(true);
	}

	public void setExecutaCadastrarHospede(Action executaCadastrarHospede) {
		this.executaCadastrarHospede = executaCadastrarHospede;
	}

	public Action getExecutaCadastrarHospede() {
		return executaCadastrarHospede;
	}

	public JFrame getTfCadastrarHospede() {
		return tfCadastrarHospede;
	}

	public void setTfCadastrarHospede(JFrame tfCadastrarHospede) {
		this.tfCadastrarHospede = tfCadastrarHospede;
	}

	public JLabel getlNomeHospede() {
		return lNomeHospede;
	}

	public void setlNomeHospede(JLabel lNomeHospede) {
		this.lNomeHospede = lNomeHospede;
	}

	public JLabel getlCPF() {
		return lCPF;
	}

	public void setlCPF(JLabel lCPF) {
		this.lCPF = lCPF;
	}

	public JTextField gettNomeHospede() {
		return tNomeHospede;
	}

	public void settNomeHospede(JTextField tNomeHospede) {
		this.tNomeHospede = tNomeHospede;
	}

	public JTextField gettCPF() {
		return tCPF;
	}

	public void settCPF(JTextField tCPF) {
		this.tCPF = tCPF;
	}

	public JButton getbInserir() {
		return bInserir;
	}

	public void setbInserir(JButton bInserir) {
		this.bInserir = bInserir;
	}

	public JButton getbFechar() {
		return bFechar;
	}

	public void setbFechar(JButton bFechar) {
		this.bFechar = bFechar;
	}

	public JLabel getlEndereco() {
		return lEndereco;
	}

	public void setlEndereco(JLabel lEndereco) {
		this.lEndereco = lEndereco;
	}

	public JLabel getlFone() {
		return lFone;
	}

	public void setlFone(JLabel lFone) {
		this.lFone = lFone;
	}

	public JTextField gettEndereco() {
		return tEndereco;
	}

	public void settEndereco(JTextField tEndereco) {
		this.tEndereco = tEndereco;
	}

	public JTextField gettFone() {
		return tFone;
	}

	public void settFone(JTextField tFone) {
		this.tFone = tFone;
	}

}
